import numpy as np

# from scipy.stats import truncnorm
import sys
import pandas as pd
import time

# sys.path.append('D:/gitee/python-script-new/papertools/')

# 注意！python脚本被直接执行和在FastApi框架中执行时，包的定义不太一致，这里以FastApi为主！！

# 导入 pappertool 包中的 common_functions 模块
from paper_tool.papertools import common_functions

from paper_tool.scriptDev.extendAndGenerate import main_init
from paper_tool.scriptDev2.generate_data_from_sheetColV2 import main_step2
from paper_tool.scriptDev2.dataPlusAndFill import main_fill_data_by_seed
from paper_tool.scriptDev.reliaValidityAnalysisVerify import main_examine
from paper_tool.scriptFactorAnaly.factorAnalyz import main_factor_analyze
from paper_tool.scriptDev.coherence import main_highly_correlated_reduce

# std_dev_array = [0.4, 0.5, 0.8, 0.6, 0.2]  # 每个维度的标准差


# file_path = 'dest/20231125-231918_truncatedNew.xlsx'
# file_path = 'dest/20231129-135223_truncatedNew.xlsx'

lower, upper = 1, 5
mean_values = [4.5, 4.2, 4.3, 4.2, 3.8]
std_devs = [0.4, 0.5, 0.5, 0.6, 0.3]  # 每个维度的标准差

# 定义维度的名称
dimensions = ["Reliability", "Responsiveness", "Assurance", "Empathy", "Tangibles"]

# 定义要保存到的文件名
filename = "truncatedNew"

# 第一张数据表名
init_sheet_name = "Sheet1"

excel_file_path_and_name = common_functions.getFilePathNameWithTimeStr(
    filename, "dest"
)
# excel_file_path_and_name = 'dest/20231202-225633_truncatedNew.xlsx'

step = 0


def run_start():

    if step < 1:
        main_init(
            mean_values,
            std_devs,
            dimensions,
            excel_file_path_and_name,
            sheet_save_name=init_sheet_name,
            lower=1.1,
            upper=4.9,
        )

        # 暂停2秒钟, 第二步即将开始clearc
        time.sleep(2)

    # 读取sheet1的数据
    data_from_sheet1 = pd.read_excel(
        excel_file_path_and_name, sheet_name=init_sheet_name
    )
    # iloc[0]是一个pandas库中的函数，用于获取数据框中的第一行数据。在这里，我们使用iloc[0]来获取Excel文件中第一行的数据。如果你想获取其他行的数据，只需将0替换为所需的行号即可
    # mean_values = data_from_sheet1.iloc[0].values

    sheet_seed_name = "sheet2Seed"
    if step < 2:
        main_step2(data_from_sheet1, excel_file_path_and_name, sheet_seed_name, 680)
        # 暂停2秒钟, 第三步即将开始
        time.sleep(2)

    # exit()
    # 填充数据的表名

    sheet_fill_name = "sheet3Filled"

    if step < 3:
        # 最终填充数据函数的参数列表, excel文件名, 后面跟上三张表名
        main_fill_data_by_seed(
            excel_file_path_and_name, init_sheet_name, sheet_seed_name, sheet_fill_name
        )

        # 暂停2秒钟
        time.sleep(2)

    # 数据生成后先初步检验下维度, 把属于同一维度的一组数据固定起来, 不允许改动
    # main_factor_analyze(excel_file_path_and_name,sheet_fill_name,5)

    hc_reduce_sheet = "highlyCorrelatedReducedNew"

    if step < 4:
        # 处理相关性高的变量
        main_highly_correlated_reduce(
            excel_file_path_and_name,
            sheet_origin_name=sheet_fill_name,
            saveSheetName=hc_reduce_sheet,
            init_mean_sheet_name="Sheet1",
        )

    # 信度和效度检验

    main_examine(excel_file_path_and_name, hc_reduce_sheet)

    # 暂停
    time.sleep(1)

    # 按照给定的个数提取因子
    main_factor_analyze(excel_file_path_and_name, hc_reduce_sheet, 5)
